package com.ip.student.models.dto;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.annotations.Version;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.ip.common.dto.BaseDTO;
import java.util.Date;

/**
 * 学生处分信息DTO
 *
 * @author 张景奇
 * @Date 2025-11-17 10:16:07
 */
@Data
@TableName("student_punishment")
@ApiModel(value="学生处分信息对象", description="学生处分信息对象")
public class StudentPunishmentDTO extends BaseDTO implements Serializable {

    // 显式声明id字段但不映射到数据库
    @TableField(exist = false)
    protected Long id;
    
    // 显式声明revision字段但不映射到数据库
    @TableField(exist = false)
    @Version
    @ApiModelProperty(value = "乐观锁")
    private Integer revision;
    
    // 显式声明updateTime字段但不映射到数据库
    @TableField(exist = false)
    protected Date updateTime;

    @TableId(type = IdType.NONE)
    @ApiModelProperty(value = "处分记录唯一标识，自增")
    private Integer punishId;
    @ApiModelProperty(value = "学生ID（逻辑关联student_info.student_id）")
    private Integer studentId;
    @ApiModelProperty(value = "学年")
    private String schoolYear;
    @ApiModelProperty(value = "学期")
    private String semester;
    @ApiModelProperty(value = "年级")
    private String grade;
    @ApiModelProperty(value = "处分日期")
    private Date punishDate;
    @ApiModelProperty(value = "处分类型")
    private String punishType;
    @ApiModelProperty(value = "处分原因")
    private String punishReason;
    @ApiModelProperty(value = "处分到期日期")
    private Date expireDate;
    @ApiModelProperty(value = "处分撤销日期")
    private Date cancelDate;
    @ApiModelProperty(value = "是否撤销（1=是，0=否）")
    private Integer isCanceled;
    @ApiModelProperty(value = "录入人ID（逻辑关联sys_user.user_id）")
    private Integer createUserId;
}